unit Teste_MRE;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Button3: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  type
        RegistroZ = record
        Marca: Array[0..20] of char;
        Modelo: Array[0..20] of char;
        Tipo: Array[0..7] of char;
        Serie: Array[0..20] of char;
        MFAdicional: Array[0..1] of char;
        CNPJ: Array[0..14] of char;
        IE: Array[0..14] of char;
        RazaoSocial: Array[0..40] of char;
        Endereco: Array[0..120] of char;
        OrdemECF: Array[0..3] of char;
        CRO: Array[0..4] of char;
        CRZ: Array[0..4] of char;
        COOi: Array[0..6] of char;
        COOrz: Array[0..6] of char;
        GNF: Array[0..6] of char;
        CCF: Array[0..6] of char;
        GRG: Array[0..6] of char;
        CFD: Array[0..6] of char;
        NFC: Array[0..4] of char;
        CFC: Array[0..4] of char;
        CDC: Array[0..4] of char;
        GTi: Array[0..18] of char;
        GTrz: Array[0..18] of char;
        ParciaisTributados: Array[0..15] of Array[0..13] of char;
        Separador:char;
        I_ICMS: Array[0..14] of char ;
        N_ICMS: Array[0..14] of char ;
        F_ICMS: Array[0..14] of char ;
        I_ISS: Array[0..14] of char ;
        N_ISS: Array[0..14] of char ;
        F_ISS: Array[0..14] of char ;
        D_ICMS: Array[0..14] of char ; // desconto
        D_ISS: Array[0..14] of char ;
        A_ICMS: Array[0..14] of char ; // acrescimo
        A_ISS: Array[0..14] of char ;
        C_ICMS: Array[0..14] of char ; // Cancelamento
        C_ISS: Array[0..14] of char ;
        ParciaisNaoTributados: Array[0..27] of Array[0..13] of char;
        Separador2:char;
        TotalSANGRIA: Array[0..14] of char ;
        TotalSUPRIMENTO: Array[0..14] of char ;
        TotalOPNF: Array[0..14] of char ; // Cancelamento nao fiscal
        VendaBruta: Array[0..14] of char ; // Cancelamento nao fiscal
        VendaBrutaICMS: Array[0..14] of char ; // Cancelamento nao fiscal
        VendaBrutaISS: Array[0..14] of char ; // Cancelamento nao fiscal
        VendaLiquidaICMS: Array[0..14] of char ; // Cancelamento nao fiscal
        VendaLiquidaISS: Array[0..14] of char ; // Cancelamento nao fiscal
        C_NFISC: Array[0..14] of char ; // Cancelamento nao fiscal
        D_NFISC: Array[0..14] of char ; // Desconto nao fiscal
        A_NFISC: Array[0..14] of char ; // Acréscimo nao fiscal
        TotaisPagamento: Array[0..19] of Array[0..13] of char;
        Separador3:char;
        TROCO: Array[0..14] of char ; // Acréscimo nao fiscal
        Aliquotas: Array[0..15] of Array[0..4] of char;
        Separador4:char;
        LegendasNaoFiscais: Array[0..27] of Array[0..14] of char;
        Filler:Array[0..30]of char;
        LegendaSangria: Array[0..15] of char ; // Acréscimo nao fiscal
        LegendaSuprimento: Array[0..15] of char ; // Acréscimo nao fiscal
        LegendasPagamento: Array[0..19] of Array[0..14] of char;
        Separador5:char;
        LegendaTROCO: Array[0..15] of char ; // Acréscimo nao fiscal
        DataMovimento: Array[0..6] of char;
    end;

var
  Form1: TForm1;
  retorno:integer;
  Conteudo:Array[0..2600] of char; // Conteudo de retorno das funções de status
  crz:string;
  dadosZ:RegistroZ;

implementation

function ECF_AbrePortaSerial: Integer; StdCall; External 'CONVECF.dll';
function ECF_FechaPortaSerial: Integer; StdCall; External 'CONVECF.dll';
function ECF_MsgLog(Conteudo:Pchar):Integer; StdCall; External 'CONVECF.dll';
function ECF_DadosReducaoMFD(NReducao:String; Texto:PChar): Integer;StdCall; External 'CONVECF.DLL';


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
        Retorno:=ECF_AbrePortaSerial();
        Memo1.Lines.Add('ECF_AbrePortaSeria='+IntToStr(Retorno));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
        ECF_FechaPortaSerial();
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
       ECF_FechaPortaSerial();
end;

procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
        Conteudo:=#0;
        if Trim(Edit1.TEXT)='' then begin
                showMessage('Informe o CRZ');
                Edit1.SetFocus;
        end
        else begin
                crz:=Edit1.Text;
                retorno:=ECF_DadosReducaoMFD(CRZ,Conteudo);
                CopyMemory(@dadosZ,@conteudo,2600);
                Memo1.Lines.Add('ECF_DadosReducaoMFD='+inttoStr(retorno));

                Memo1.Lines.Add('MARCA: '+Dadosz.Marca);
                Memo1.Lines.Add('MODELO: '+Dadosz.MODELO);
                Memo1.Lines.Add('TIPO: '+Dadosz.Tipo);
                Memo1.Lines.Add('Serie: '+Dadosz.Serie+Dadosz.MFAdicional);
                Memo1.Lines.Add('CNPJ: '+Dadosz.CNPJ);
                Memo1.Lines.Add('I.E.: '+Dadosz.IE);
                Memo1.Lines.Add('Razao Social: '+Dadosz.RazaoSocial);
                Memo1.Lines.Add('Endereco: '+Dadosz.Endereco);
                Memo1.Lines.Add('ECF: '+Dadosz.OrdemECF);
                Memo1.Lines.Add('CRO: '+Dadosz.CRO);
                Memo1.Lines.Add('CRZ: '+Dadosz.CRZ);
                Memo1.Lines.Add('COO inicio dia: '+Dadosz.COOi);
                Memo1.Lines.Add('COO da Redução: '+Dadosz.COOrz);
                Memo1.Lines.Add('GNF: '+Dadosz.GNF);
                Memo1.Lines.Add('CCF: '+Dadosz.CCF);
                Memo1.Lines.Add('GRG: '+Dadosz.GRG);
                Memo1.Lines.Add('CFD: '+Dadosz.CFD);
                Memo1.Lines.Add('NFC: '+Dadosz.NFC);
                Memo1.Lines.Add('CFC: '+Dadosz.CFC);
                Memo1.Lines.Add('CDC: '+Dadosz.CDC);
                Memo1.Lines.Add('GT inicio do dia: '+Dadosz.GTi);
                Memo1.Lines.Add('GT redução Z: '+Dadosz.GTrz);
                for i:=0 to 15 do
                        Memo1.Lines.Add('Parcial de tributação '+inttostr(i)+': '+Dadosz.ParciaisTributados[i]);
                Memo1.Lines.Add('Isento ICMS: '+Dadosz.I_ICMS);
                Memo1.Lines.Add('Não tributado ICMS: '+Dadosz.N_ICMS);
                Memo1.Lines.Add('Substituição Tributária ICMS: '+Dadosz.F_ICMS);
                Memo1.Lines.Add('Isento ISSQN: '+Dadosz.I_ISS);
                Memo1.Lines.Add('Não tributado ISSQN: '+Dadosz.N_ISS);
                Memo1.Lines.Add('Substituição Tributária ISSQN: '+Dadosz.F_ISS);
                Memo1.Lines.Add('Desconto ICMS: '+Dadosz.D_ICMS);
                Memo1.Lines.Add('Desconto ISSQN: '+Dadosz.D_ISS);
                Memo1.Lines.Add('Acréscimo ICMS: '+Dadosz.A_ICMS);
                Memo1.Lines.Add('Acréscimo ISSQN: '+Dadosz.A_ISS);
                Memo1.Lines.Add('Cancelamento ICMS: '+Dadosz.C_ICMS);
                Memo1.Lines.Add('Cancelamento ISSQN: '+Dadosz.C_ISS);
                for i:=0 to 27 do
                        Memo1.Lines.Add('Parcial Não Tributados '+inttostr(i)+': '+Dadosz.ParciaisTributados[i]);
                Memo1.Lines.Add('SANGRIA: '+Dadosz.TotalSANGRIA);
                Memo1.Lines.Add('SUPRIMENTO: '+Dadosz.TotalSUPRIMENTO);
                Memo1.Lines.Add('OPNF: '+Dadosz.TotalOPNF);
                Memo1.Lines.Add('Venda Bruta: '+Dadosz.VendaBruta);
                Memo1.Lines.Add('Venda Bruta ICMS: '+Dadosz.VendaBrutaICMS);
                Memo1.Lines.Add('Venda Bruta ISS: '+Dadosz.VendaBrutaISS);
                Memo1.Lines.Add('Venda Liquida ICMS: '+Dadosz.VendaLiquidaICMS);
                Memo1.Lines.Add('Venda Liquida ISS: '+Dadosz.VendaLiquidaISS);
                Memo1.Lines.Add('Cancelamento Não Fiscal: '+Dadosz.C_NFISC);
                Memo1.Lines.Add('Desconto Não Fiscal: '+Dadosz.D_NFISC);
                Memo1.Lines.Add('Acréscimo Não Fiscal: '+Dadosz.A_NFISC);
                for i:=0 to 19 do
                        Memo1.Lines.Add('Totais de Pagamento '+inttostr(i)+': '+Dadosz.TotaisPagamento[i]);
                Memo1.Lines.Add('TROCO: '+Dadosz.TROCO);

                for i:=0 to 15 do
                        Memo1.Lines.Add('Aliquotas'+inttostr(i)+': '+Dadosz.Aliquotas[i]);
                for i:=0 to 27 do
                        Memo1.Lines.Add('Legendas Não Fiscais '+inttostr(i)+': '+Dadosz.LegendasNaoFiscais[i]);

                Memo1.Lines.Add('Legenda Sangria: '+Dadosz.LegendaSangria);
                Memo1.Lines.Add('Legenda Suprimento: '+Dadosz.LegendaSuprimento);
                for i:=0 to 19 do
                        Memo1.Lines.Add('Legendas Pagamento '+inttostr(i)+': '+Dadosz.LegendasPagamento[i]);
                Memo1.Lines.Add('Legenda TROCO: '+Dadosz.LegendaTroco);
                Memo1.Lines.Add('Data MOvimento: '+Dadosz.DataMovimento);
                Memo1.Lines.ADD('');
        end;
end;

end.
